import Mock from 'mockjs';

interface RequestParams {
    query: {
        id?: string
        current?: string;
        pageSize?: string;
        operator?: string;
        startTime?: string;
        endTime?: string;
    };
    params: {
        id: string; // 获取日志详情时通过 id 获取
    };
}

// 公共的样本数据
const modules = ['首页', '用户', '体育', '娱乐', '交易', '设置', '数据'];
const statuses = [1, 0]; // 1: 成功, 0: 失败
const ips = ['192.168.1.1', '192.168.1.2', '192.168.1.3', '192.168.1.4'];

// 生成日志条目的模板
const generateLogEntry = (id?: string) => ({
    'id': id ? id : '@id', // 随机生成一个 ID
    'operationTime': '@datetime', // 随机日期时间
    'operator': '@name', // 随机名字
    'status': '@pick(' + statuses.join(',') + ')', // 随机操作状态
    'module': '@pick(' + modules.join(',') + ')', // 随机模块
    'content': '@pick(' + modules.join(',') + ') module operation content', // 基于模块生成内容
    'ip': '@pick(' + ips.join(',') + ')', // 随机IP
    // 新增的字段：日志详情
    'httpRequestUrl': '@url', // 随机生成一个 HTTP 请求地址
    'httpMethod': '@pick(["GET", "POST", "PUT", "DELETE", "PATCH"])', // 随机生成请求方式
    'browserInfo': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/@integer(100, 999).@integer(1000, 9999).@integer(1000, 9999) Safari/537.36',
    // 详细指定请求参数的结构
    'requestParams': 'randomStr=%5BblockPuzzle%5D&code=%5BnntK5FSEcsl3tR3/dq+cvQab5GgCw/rf/37ukQ3MYrcNP57juhjaHOhgqC1evd91A0Mst8+1o1CONlFJ/GrL9lfxLyvKdewol6VVj6VlEy0=%5D&grant_type=%5Bpassword%5D&scope=%5Bserver%5D&username=%5Badmin%5D',
});

export default [
    {
        url: '/api/v1/log/managementOperations/list',
        method: 'get',
        response: ({ query }: RequestParams) => {
            // 使用 Mock.js 生成指定数量的日志数据
            const logEntriesTemplate = {
                [`logEntries|${query.pageSize}`]: [generateLogEntry()]
            };

            const mockData = Mock.mock(logEntriesTemplate).logEntries;

            return {
                code: 200,
                message: '操作成功',
                data: {
                    list: mockData,
                    total: 100 // 返回数据总数
                }
            };
        }
    },
    {
        url: '/api/v1/log/managementOperations/details',
        method: 'get',
        response: ({ query }: RequestParams) => {
            // 根据传入的 id 获取相应的日志详情
            const logDetail = generateLogEntry(query.id);

            return {
                code: 200,
                message: '操作成功',
                data: Mock.mock(logDetail) // 返回模拟的详情数据
            };
        }
    }
];